When a signal is recorded on a storage medium such as a magnetic disk or an optical disk, the signal is modulation-encoded before it is recorded such that when the recorded signal is reproduced, the amplitude of the read signal can be controlled and a clock signal can be correctly reproduced. In the reproduction process, the original waveform is reproduced taking into account the fact that the signal reproduced from a medium is influenced by an immediately previous signal, and most likelihood data is determined from the reproduced signal on the basis of the characteristic of the recorded signal by means of a PRML (Partial Response Maximum-Likelihood) scheme or the like.
FIG. 1 shows an example of a conventional recording/reproducing apparatus 1 using the PRML technique. The recording/reproducing apparatus 1 includes a modulation encoder 11, a PR communication channel 12, and decoder 13.
The modulation encoder 11 includes an encoding table 41-1 of modulation codes used in encoding of an input signal under a particular restriction. The modulation encoder 11 encodes an input signal into a particular modulation code in accordance with the encoding table 41-1 and outputs a resultant encoded signal produced under the particular restriction to a PR (Partial Response) communication channel 12. A specific example of the restriction is a DC free restriction. Use of the DC free restriction causes numbers of occurrences of 0s and 1s to become substantially equal for a sufficiently long period. Another example of the restriction is a (d, k) restriction that requires that the minimum and maximum numbers of successive 0s be d and k, respectively.
The PR communication channel 12 includes a recording/reproducing unit 21 and an equalizer 22. In the PR communication channel 12, recording/reproducing is performed, for example, in a PR2 (Partial Response Class 2) recording/reproducing channel. The recording/reproducing unit 21 converts the encoded signal received from the modulation encoder 11 into a NRZI (non return to zero inverted) coded signal and stores the resultant NRZI-coded signal on a storage medium mounted on or embedded in the recording/reproducing unit 21 by means of a mark edge recording method. On the other hand, in the reproduction operation, the recording/reproducing unit 21 reads the encoded signal from the storage medium via the PR-2 channel and supplies the read encoded signal to the equalizer 22. The equalizer 22 performs PR equalization using waveform interference on the received encoded signal so as to achieve a target equalization characteristic. The resultant equalized signal is supplied to the decoder 13.
The decoder 13 includes a PR-Viterbi decoder 31 and a modulation decoder 32 and serves to decode the signal supplied from the equalizer 22. From the signal received from the PR communication channel 12, the PR-Viterbi decoder 31 determines, based on NRZI encoding and the PR-2 channel, the trellis representation indicating time-to-time state transitions associated with the encoding process and performs Viterbi decoding in accordance with the determined trellis representation of the NRZI encoding and the PR-2 channel. A resultant Viterbi-decoded signal to the modulation decoder 32. The modulation decoder 32 includes an encoding table 41-2 that is the same as the encoding table 41-1 disposed in the modulation encoder 11 (hereinafter, encoding tables 41-1 and 41-2 will be generically referred to as encoding tables 41, if it is not necessary to distinguish them from each other). The modulation decoder 32 performs modulation decoding on the signal supplied from the PR-Viterbi decoder 31 and outputs a resultant modulation-decoded signal to a following stage (not shown).
In recent years, it has become popular to use a high-performance error-correction code such as a turbo code or an LDPC (Low Density Parity Check) code in various applications of communications and broadcasting. There is an increasing need for using such a high-performance error-correction code also in applications associated with storage media. For example, when a turbo code is used in the recording/reproducing apparatus 1 described above, a turbo encoder is additionally disposed at a stage in front of the modulation encoder 11, and a turbo decoder for decoding the turbo code is additionally disposed at a stage following the modulation decoder 32. In this structure, not only information taking a value of 0 or 1 (hard information but also information (soft information or soft decision information) indicating the degree of likelihood of the hard information is input to the turbo decoder located at the stage following the modulation decoder 32. That is, it is necessary that soft input be supplied to the decoder of the turbo code or the LDPC code. This means that when a modulation code is decoded by the modulation decoder 32 located at the stage in front of the turbo encoder or the LDPC encoder, it is necessary to determine soft output.
In general, a soft output associated with a code is determined by using a trellis representation indicating time-sequential transitions corresponding to a state transition table indicating a time-to-time encoding process by means of a BCJR (Bhal-Cocke-Jeinek-Raviv) algorithm or a SOVA (Soft-Output Viterbi Algorithm). The trellis representation can be easily determined when an input signal is decoded using a convolution code. However, when decoding is performed using a non-linear modulation code, it is not necessarily easy to determine the trellis representation. Recent researches have revealed that a trellis representation is possible for some types of modulation codes using a simple encoding table, such as a (1, 7) RLL (Run Length Limited) code (according to the standard of ECMA (Electronic Computer Manufacturers Association)-195) used in recording/reproducing on or from a magnetooptical disk, and thus a turbo decoder may be concatenated with a modulation decoder using a (1, 7) RLL code (“Turbo Decoding with Run Length Limited Code for Optical Stage” (E. Yamada et al., The Japan Society of Applied Physics, Vol. 41, pp. 1753-1756, March, 2002 (hereinafter referred to as Non-Patent Document 1). In RLL codes, the number of “0s” between a “1” and a next “1” in a modulation code is limited, and a particular RLL code with a minimum run length d indicating the minimum number of “0s” between adjacent “1s” and a maximum run length k is represented by (d, k)RLL.
FIG. 2 shows an example of a configuration of a conventional recording/reproducing apparatus 51 using an RLL code concatenated with a turbo code. In this example shown in FIG. 2, the modulation encoder 11 shown in FIG. 1 is replaced with an encoder 61 and the decoder 13 is replaced with a decoder 62. FIGS. 1 and 2 will also be referred to when the present invention is described later.
The encoder 61 includes a turbo encoder 71, an interleaver 72, and an RLL (Run Length Limited) encoder 73. The turbo encoder 71 includes an element encoder 91, an interleaver 92, an element encoder 93, and a decimator 94. The turbo encoder 71 performs turbo encoding on an input signal and supplies a resultant turbo-coded signal to the interleaver 72.
A signal input from the outside is simultaneously applied to the element encoder 91 and the interleaver 92. The element encoder 91 generates a parity bit string 1 from the input signal and supplies the resultant parity bit string 1 to the decimator 94. The interleaver 92 interleaves the signal that was also input to the element encoder 91 and supplies a resultant interleaved signal to the element encoder 93. The element encoder 93 generates a parity bit string 2 from the interleaved signal supplied from the interleaver 92 and supplies the resultant parity bit string 1 to the decimator 94. The decimator 94 decimates the parity bit string 1 and the parity bit string 2 and multiplexes the resultant decimated parity string 1 and parity bit string 2 thereby generating a turbo-coded signal. The resultant turbo-coded signal is supplied to the interleaver 72.
The interleaver 72 interleaves a turbo-coded signal supplied from the turbo encoder 71 and supplies the resultant interleaved signal to the RLL encoder 73. The PLL encoder 73 has a (1, 7) RLL encoding table 101. The PLL encoder 73 performs (1, 7) RLL encoding on the signal received from the interleaver 72 in accordance with the RLL encoding table 101 and outputs the resultant signal over the PR communication channel 12.
The decoder 62 includes a PR-SISO (Soft-Input Soft-Output) decoder 81, an RLL-SISO decoder 82, a deinterleaver 83, and a turbo decoder 84, and serves to decode the signal supplied from the equalizer 22. From the signal received from the PR communication channel 12, the PR-SISO decoder 81 determines, based on NRZI encoding and the PR-2 channel, the trellis representation indicating time-sequential state transitions in the time-to-time encoding process represented in the state transition table and then performs SISO (Soft-Input Soft-Output) decoding based on the determined trellis representation of the NRZI encoding and the PR-2 channel. The resultant SISO-decoded signal (soft information) is supplied to the RLL-SISO decoder 82.
The RLL-SISO decoder 82 determines, based on (1, 7) RLL encoding table 101 disposed in the PLL encoder 73, the trellis representation indicating time-sequential state transitions in the time-to-time encoding process represented in the state transition table and performs SISO decoding on the signal received from PR-SISO decoder 81 in accordance with the determined trellis representation of (1, 7) RLL. The resultant SISO-decoded signal is supplied to the deinterleaver 83.
Referring to FIGS. 3 and 4, a trellis representation of (1, 7) RLL encoding is described below. FIG. 3 shows an example of a state transition table of (1, 7) RLL encoding, and FIG. 4 shows an example of a trellis representation, that is, a representation of time-sequential transitions indicated in the state transition table shown in FIG. 3. In the example shown in FIG. 3, the state transition table represents an encoding process in a period from a current time and a next time. In this state transition table shown in FIG. 3, for a better understanding, state information indicating “previous-time state” and “current-time state” are added to the (1, 7) RLL encoding table 101.
In the state transition table shown in FIG. 3, previous-time state”, “previous-time output”, “previous-time input”, “current-time output”, “current-time input”, and “current-time state” are described from right to left in each row, and from top to bottom, a transition from a “previous-time state” of S0 in which the “previous-time output” is 0 and the “previous-time input” is 00, a transition from a “previous-time state” of S1 in which the “previous-time output” is 0 and the “previous-time input” is 01, a transition from a “previous-time state” of S2 in which the “previous-time output” is 0 and the “previous-time input” is 10, a transition from a “previous-time state” of S3 in which the “previous-time output” is 0 and the “previous-time input” is 11, a transition from a “previous-time state” of S4 in which the “previous-time output” is 1 and the “previous-time input” is 00, and a transition from a “previous-time state” of S5 in which the “previous-time output” is 1 and the “previous-time input” is 01, are described.
In the trellis representation shown in FIG. 4, circles on the left-hand side indicate “states at the previous time” shown in FIG. 3, arrows indicate transitions from the respective “states at the previous time” to “states at the current time”, symbols to the right and left of a slash of each label on each arrow indicate a corresponding “current-time input” and “current-time output” shown in FIG. 3, circles to the right of the heads of respective arrows indicate “states at the current time” shown in FIG. 3.
Thus, in the examples shown in FIGS. 3 and 4, when the “state at the previous time” is S0, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes S4. If 01 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes 5. If 10 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S3. When the state at the previous time is S1, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes S4. If 01 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes S5. If 10 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S3.
When the state at the previous time is S2, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 101 and the “state at the current time” becomes S4. If 01 is input as the “input at the current time” then the “output at the current time” is given by 101 and the “state at the current time” becomes S5. If 10 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S3. When the state at the previous time is S3, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S0. If 01 is input as the “input at the current time” then the “output at the current time” is given by 100 and the “state at the current time” becomes S1. If 10 is input as the “input at the current time” then the “output at the current time” is given by 100 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 100 and the “state at the current time” becomes S3.
When the state at the previous time is S4, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes S4. If 01 is input as the “input at the current time” then the “output at the current time” is given by 001 and the “state at the current time” becomes S5. If 10 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S3. When the state at the previous time is S5, a transition occurs depending on the given input as follows. If 00 is input as the “input at the current time” then the “output at the current time” is given by 010 and the “state at the current time” becomes S0. If 01 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S1. If 10 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S2. If 11 is input as the “input at the current time” then the “output at the current time” is given by 000 and the “state at the current time” becomes S3.
As described above, in the trellis representation (state transition table) of the (1, 7) RLL encoding, possible transitions at a particular time are represented for respective six states S0 to S5. In any state, if an input signal is given, an output signal is uniquely determined. Thus, the RLL-SISO decoder 82 can correctly perform SISO decoding in accordance with the (1, 7) RLL trellis representation.
Referring again to FIG. 2, the RLL-SISO decoder 82 supplies the SISO-decoded signal to the deinterleaver 83. The deinterleaver 83 deinterleaves the signal supplied from the RLL-SISO decoder 82 in a manner reverse to the interleaving performed by the interleaver 72, and the deinterleaver 83 supplies the resultant deinterleaved signal to the turbo decoder 84.
The turbo decoder 84 includes an interpolator 111, an element decoder 112, an interleaver 113, an element decoder 114, and a deinterleaver 115. The turbo decoder 84 performs turbo decoding on the signal (soft information) received from the deinterleaver 83 and outputs a resultant decoded signal to the outside (not shown). The interpolator 111 performs interpolation on the signal received from the deinterleaver 83 and supplies a resultant signal to the element decoder 112 and the element decoder 114. The element decoder 112 performs SISO decoding on the signal received from the interpolator 111 and supplies the resultant SISO-decoded signal together with reliability information to the element decoder 114 via the interleaver 113. The element decoder 114 performs SISO decoding on the signal received from the interpolator 111 by using the reliability information received from the element decoder 112. The resultant SISO-decoded signal and reliability information are supplied to the element decoder 112 via the deinterleaver 115. The above element decoding process is iterated several times. After the iteration of the element decoding process, the element decoder 114 performs a final decision and outputs a decision result to a following stage (not shown).
Note that the BCJR algorithm or the SOVA is used in the SISO decoding in the PR-SISO decoder 81, the RLL-SISO decoder 82, the element decoder 112 and the element decoder 114 shown in FIG. 2.
In the recording/reproducing apparatus 51, as described above, the RLL-SISO decoder 82 determines the trellis representation of (1, 7) RLL encoding in accordance with the (1, 7) RLL encoding table 101, and soft information is easily obtained. This allows the turbo decoder 84 to be located at the stage following the RLL-SISO decoder 82.
In recent years, a 17PP (Parity Preserve/Prohibit RMTR (Repeated Minimum Transition Runlength) code has been used in recording/reproducing on high-density optical disks. In the 17PP code, a complicated variable-length encoding table is used, as described, for example in U.S. Pat. No. 6,496,541B1.
In the variable-length encoding table associated with the 17PP code, the bit length of an “input” is not fixed unlike in the (1, 7) RLL code in which the input has a fixed bit length such as “00” or “01”. This means that when an “input” such as 00 is given, an “output” is not necessarily uniquely determined. Thus, unlike the (1, 7) RLL code, it is difficult to determine the trellis representation of the 17PP code from the variable-length encoding table of the 17PP code, because the bit length of the input is not fixed. Even if it is possible to determine the trellis representation directly from the state transition table indicting time-to-time encoding process, the resultant trellis representation becomes very complicated and includes a huge number of states. Thus, SISO decoding of a modulation code using a variable-length table such as a 17PP code is practically impossible.